// pages/shoplist/shoplist.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    query: {},
    shopList: [], // 商铺列表
    page: 1, // 当前页码
    limit: 10, // 每页数据条数
    total: 0,
    isloading: false, // 节流阀，默认为 false
    canLoadMore: true // 控制是否可以继续加载更多数据

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    this.setData({
      query: options
    })
    this.getShops();
  },

  getShops(cb) {
    if (this.data.isloading || !this.data.canLoadMore) return; // 如果正在加载数据或没有更多数据，直接返回

    this.setData({
      isloading: true // 设置节流阀为 true
    });
    wx.showLoading({
      title: '数据加载中。。。'
    });

    wx.request({
      url: `https://applet-base-api-t.itheima.net/categories/${this.data.query.id}/shops`,
      method: 'GET',
      data: {
        _page: this.data.page,
        _limit: this.data.limit
      },
      success: (res) => {
        // console.log(res);
        if (res.data.length === 0) {
          this.setData({
            canLoadMore: false // 没有更多数据时，设置 canLoadMore 为 false
          });
        }
        this.setData({
          shopList: [...this.data.shopList, ...res.data],
          total: res.header['X-Total-Count']
        });
      },
      fail: (err) => {
        console.error('请求失败', err);
      },
      complete: ()=> {
        wx.hideLoading() // 请求完成时隐藏loading效果
        this.setData({
          isloading: false // 重置节流阀为 false
        });
        cb && cb()
      }
    })

  },


  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    wx.setNavigationBarTitle({
      title: this.data.query.title
    })
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.setData({
      shopList: [], // 重置数据列表
      page: 1, // 重置页码
      isloading: false, // 重置节流阀
      canLoadMore: true // 重置是否可以继续加载更多数据
    });
    this.getShops(() => {
      wx.stopPullDownRefresh(); // 关闭下拉刷新效果
    }); // 重新获取数据

    
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    if (this.data.page * this.data.limit > this.data.total) {
      // 证明没有下一页的数据了
      return wx.showToast({
        title: '数据加载完毕！',
        icon:'none'
      })
    }

    if (!this.data.isloading && this.data.canLoadMore) { // 如果节流阀为 false 且可以继续加载更多数据，才发起请求
      this.setData({
        page: this.data.page + 1 // 增加页码
      });
      this.getShops();
    }

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})